/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.com.cotelasa.scp.controlador;

import java.io.Serializable;
import java.util.logging.Level;
import javax.faces.event.ActionEvent;
import javax.inject.Inject;
import javax.inject.Named;
import org.apache.log4j.Logger;
import org.springframework.context.annotation.Scope;
import pe.com.cotelasa.common.controlador.MBGenerico;
import pe.com.cotelasa.common.dao.excepcion.DAOException;
import pe.com.cotelasa.scp.common.IObserver;
import pe.com.cotelasa.scp.common.ISubject;
import pe.com.cotelasa.scp.controlador.backingBean.BKComponenteFindCliente;
import pe.com.cotelasa.scp.dominio.common.TIPO_CLIENTES;
import pe.com.cotelasa.scp.dominio.excepcion.ServiceException;
import pe.com.cotelasa.scp.dominio.service.IServicioCliente;
import pe.com.cotelasa.scp.entidad.Cliente;

/**
 *
 * @author Jorge
 */
@SuppressWarnings("serial")
@Named(value = "MBComponenteFindCliente")
@Scope("request")
public class MBComponenteFindCliente extends MBGenerico implements ISubject, Serializable {

    private static Logger logger = Logger.getLogger(MBComponenteFindCliente.class);
    
    @Inject
    private BKComponenteFindCliente bkComponenteFindCliente;
    @Inject
    private IServicioCliente servicioCliente;

    public void inicializarBusqueda(ActionEvent actionEvent) {
        bkComponenteFindCliente.getListaClientes().clear();
        bkComponenteFindCliente.setClienteSeleccionado(new Cliente());
        bkComponenteFindCliente.getClienteSeleccionado().setTipoCliente(((String)actionEvent.getComponent().getAttributes().get("tipoCliente")).charAt(0));
        bkComponenteFindCliente.setRazon("");
    }

    public void cargarClientes() {
        try {
            
            bkComponenteFindCliente.setListaClientes(servicioCliente.listarClientesActivos());
        } catch (ServiceException ex) {
            java.util.logging.Logger.getLogger(MBComponenteFindCliente.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void buscarClientes() {
        try {
            bkComponenteFindCliente.getClienteSeleccionado().setRazonSocial(bkComponenteFindCliente.getRazon());
            bkComponenteFindCliente.setListaClientes(servicioCliente.listarClientesTipo(bkComponenteFindCliente.getClienteSeleccionado()));
        } catch (ServiceException ex) {
            java.util.logging.Logger.getLogger(MBComponenteFindCliente.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    public void clearObserver() {
        bkComponenteFindCliente.getObservers().clear();
    }

    @Override
    public void addObserver(IObserver observador) {
        bkComponenteFindCliente.addObservers(observador);
    }

    @Override
    public void notificarObservadores() {

        for (IObserver observer : bkComponenteFindCliente.getObservers()) {
            observer.actualizarObservador(bkComponenteFindCliente.getClienteSeleccionado());
        }

    }
}
